package com.test.daily.leetcode.y2022.m07.day0705.v08;

/**
 * @descriptions:
 * @author: Tom
 * @date: 2022/7/5 下午 07:47
 * @version: 1.0
 */
public class Solution {
    public void mergeSort2(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
    }

    public void process(int[] arr, int L, int R) {
        if (L == R) {
            return;
        }
        int M = L + ((R - L) >> 1);
        process(arr, L, M);
        process(arr, M + 1, R);
        merge(arr, L, M, R);
    }

    public void merge(int[] arr, int L, int M, int R) {
        int[] help = new int[R - L + 1];
        int p1 = L, p2 = M +1;
        int i = 0;
        while(p1<= M && p2 <= R){
            help[i++] = arr[p1] < arr[p2] ? arr[p1++]: arr[p2++];
        }
        while(p1 <= M){
            help[i++] = arr[p1++];
        }
        while(p2<=R){
            help[i++] = arr[p2++];
        }
        i = 0;
        for (; i < help.length; i++) {
            arr[L+i] = help[i];
        }
    }
}
